ag = logss_EventAnalyzer.tabEventsString;
ag是一个静态字符串,
logss_EventAnalyzer是一个类,
tabEventString是一个静态字符串数组。
调试期间,我看到logss_EventAnalyzer.tabEventsString包含一些字符串,但它没有分配给ag。它的值是空的。
这里的问题是什么,解决办法是什么?
谢谢!
发布于 2009-03-20 11:42:57
您可以说“在调试期间”;当您分配ag时,logss_EventAnalyzer.tabEventsString[0]是否包含一个(非空)字符串?
注意,赋值并不意味着对tabEventsString[0]的更改将反映在ag中,因为string是不可变的,而对tabEventsString[0]的任何更改实际上都在创建新的字符串。如果您想要这类行为,则需要使用某个类的成员:
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);
}
}如果你做的是完全不同的事情,你得给我们一个线索.
发布于 2009-03-20 11:42:42
当您在所讨论的行中有一个断点时,ag是否得到一个赋值?
我怀疑,在代码的其他部分,您无意中将ag设置为null,或者在logss_EventAnalyzer.tabEventsString[0]被赋予非空值之前,您正在分配logss_EventAnalyzer.tabEventsString[0]。
如果你给出更多的细节,我可以给一个更好的答案。
发布于 2009-03-20 11:58:41
logss_EventAnalyzer.tabEventsString的第一个条目包含分配给空值的字符串。您必须查看堆栈跟踪,以查看添加了哪个对象作为第一个条目。此对象可以被赋值为空。
https://stackoverflow.com/questions/665770
复制相似问题