【问题标题】:Referenced object has value of nothing引用的对象没有任何值
【发布时间】:2013-04-04 06:22:10
【问题描述】:

如何在这里解决“引用的对象没有任何价值”.....
具有字符串类型属性的 logDTO 对象。
有些属性的值是空的。它抛出上面引用的错误。我尝试使用 .ToString() 但仍然抛出错误。

 Public Sub WriteJobLog(ByVal logDTO As JobLogDTO)
  Dim strArray As String() = {logDTO.Mode.ToString(), logDTO.UniqueId.ToString(), logDTO.ThreadId.ToString(), _
                         logDTO.StartTime.ToString(), logDTO.FinishTime.ToString(), logDTO.TimeTaken.ToString(), _
                         logDTO.PropertyId.ToString(), logDTO.ChannelId.ToString(), logDTO.URL.ToString(), _
                         logDTO.ExceptionOrResult.ToString(), logDTO.AvblWorkerThread.ToString(), logDTO.AvblPortThread.ToString(), _
                         logDTO.AcqrdWorkerThread.ToString(), logDTO.AcqurdPortThread.ToString(), logDTO.JobsToProcess.ToString()}
  Dim lLogObj As Logging = New Logging(JobType.JOB_TRANSACTTIONAL)
  lLogObj.WriteLogFile(String.Join(Configuration.LogDelimiter, strArray))
End Sub

JobLogDTO

   public class JobLogDTO
  {
    public string  Mode { get; set; }
    public string  UniqueId { get; set; }
    public string  ThreadId { get; set; }
    public string  StartTime { get; set; }
    public string  FinishTime { get; set; }
    public string  TimeTaken { get; set; }
    public string  PropertyId { get; set; }
    public string  ChannelId { get; set; }
    public string  URL { get; set; }
    public string  ExceptionOrResult { get; set; }
    public string  AvblWorkerThread { get; set; }
    public string  AvblPortThread { get; set; }
    public string  AcqrdWorkerThread { get; set; }
    public string  AcqurdPortThread { get; set; }
    public string  JobsToProcess { get; set; }
  }

更新:
logDTO 对象的值

         AcqrdWorkerThread  "24"    String
        AcqurdPortThread    "24"    String
        AvblPortThread      "400"   String
        AvblWorkerThread    "399"   String
        ChannelId           Nothing String
        ExceptionOrResult   Nothing String
        FinishTime          Nothing String
        JobsToProcess      "24" String
        Mode               "Parallel"   String
        PropertyId          Nothing String
        StartTime          "04.04.2013 12:17:25"    String
        ThreadId           "5"  String
        TimeTaken          Nothing  String
        UniqueId           "97693c1b-2bbc-4e40-a542-291568aeee4c"   String
        URL                Nothing  String

【问题讨论】:

  • logDTO和logDTO.Mode的值是多少?
  • 你检查logDTO是不是什么都没有吗?使用断点
  • @Adrian Godong:logDTO 的附加值。请找到更新后的问题。
  • @RajaPrabhu:是的,有些属性值什么都不是。我尝试使用 .ToString() 但仍然抛出错误。
  • 如果对象什么都不是,.tostring 将不起作用 - 因为没有对象可以传递其“tostring”值。你可以做什么:用一个空值初始化你的属性,如果是字符串“”。或者修改你的 getter 方法,以便当对象什么都不是时它们传递其他东西......

标签: vb.net


【解决方案1】:

通常.ToString() 函数将任何instance 的值转换为其等效的string 表示形式。但在这里你的instance 什么都不是。这就是它引发异常 Referenced object has value of nothing 的原因。

我建议您可以在您的情况下使用Trim()。即使传递的argumentnothing,它也会简单地返回empty string

例如:

trim(logDTO.Mode)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多