ag = logss_EventAnalyzer.tabEventsString [0];
ag 是一个静态字符串,
logss_EventAnalyzer 是一个类,
tabEventString 是一个静态字符串数组。
在调试期间,我看到logss_EventAnalyzer.tabEventsString [0]包含一些字符串,但它没有分配到ag。它的值为空。
这里有什么问题,解决方案是什么?
谢谢!
答案 0 :(得分:1)
你说“在调试期间”;分配ag 时,logss_EventAnalyzer.tabEventsString[0]
是否包含(非空)字符串?
请注意,分配并不意味着对tabEventsString[0]
的更改将反映在ag
中,因为string
是不可变的,并且对tabEventsString[0]
的任何更改实际上都在创建 new 字符串。如果您想要这种类型的行为,则需要使用某个类的成员:
public class Foo {
public string Bar {get;set;}
}
static Foo ag;
static Foo[] tabEventsString;
...
ag = logss_EventAnalyzer.tabEventsString[0];
...
现在ag.Bar
将始终与tabEventsString[0].Bar
另外 - 您是否有一个名为ag
的局部变量?这将优先。
您可以发布演示此问题的代码吗?
撇开;请注意,如果您的应用程序变得复杂,静态字段和数组都会有各种相关的复杂性...您可能需要考虑重新分解它们。
以下工作正常:
static class logss_EventAnalyzer {
static string[] tabEventsString = {"abc","def","ghi"};
static string ag;
static void Main() {
ag = logss_EventAnalyzer.tabEventsString[0];
System.Console.WriteLine(ag);
}
}
如果你正在做一些根本不同的事情,你将不得不给我们一个线索......
答案 1 :(得分:0)
如果相关行有断点,ag
是否会分配值?
我怀疑在您的代码的其他部分中,您将ag
设置为无意中为null,或者您可能在ag
被赋予非空值之前分配logss_EventAnalyzer.tabEventsString[0]
如果你提供更多细节,我可以给出更好的答案。
答案 2 :(得分:0)
logss_EventAnalyzer.tabEventsString的第一个条目包含分配给空值的字符串。您必须查看堆栈跟踪以查看哪个对象被添加为第一个条目。该对象可以为空分配。