P144页第三段中描述“无论字段是在声明的同时进行赋值,还是在声明之后进行赋值,C#编译器都要求在访问字段之前的某个时候,显示地对字段进行赋值,……。例如,如果在为employee1.Salary赋值之前调用if(employee1.Salary == "Too Littel"){……},就会造成编译器错误”。请问这句话是对的吗?说明:在此处emplyee1是一个类的实例对象。Salary是类的公有字段。
解决方案 »
- C# 编写一个打印条形码的类,求教~~~
- 如何解析验证码图片中的数字啊,非常急啊!!!
- 急求房态图控件 要支持扩展房态的!!! 多谢
- C#的小程序
- 丢失了.exe怎么办????
- 当一个MDI的窗口的大小被调整时我想要statusStrip的大小和上面的控件同时调整.这个能实现吗?
- 求这样的脚本
- 窗口传值
- How to get the language of my OS ( chinese or english), how to activate full shape ,half shape and punctuation?
- VS.Net 英文版的古怪问题:窗体大小会自动发生变化!!!
- avi视频播放时间计算
- 如何限制DataGridView中某列只能输入汉字?
if(i == 0)
{
}这样代码是对的,i默认就是0.
但是编译器认为这样做是没有意义的,大多出现这样的代码是开发人员的疏忽,所以会提示。要先初始化。
否则if(employee1!=null){}
作者的意思是不是说类中的字段(注意不是局部变量)如果没有赋值而直接使用,则C#编译器会报错?
请看清我的提问,谢谢。局部变量要赋初值这个当然对的,作者在书中的其它部分做了说明,我也没有什么疑问。只是作者的P144页这段话讲的是类中的字段的赋初值问题。我的测试代码表明:类中的字段如果没有赋值而直接使用,则C#编译器只会警告,而不会报错,和作者的描述有点出入。
字段和属性不同的。
employee1.Salary
和我给你的例子有什么不同的?你要懂得触类旁通。
class Employee
{
public string FirstName;
public string LastName;
public string Salary;
}
class Program
{
static void Main()
{
Employee employee1 = new Employee(); if (employee1.Salary == null)
{
System.Console.WriteLine("Right");
} System.Console.ReadKey(true);
}
}
以上代码,会有编译错误吗?
很感谢您的热心回答,但是我还是弱弱的问问,您有没有看清我的提问?
呵呵,很简单的问题我也不会放到这里请高手解答呀,呵呵。还是谢谢你呀,哈。
如果你这样说。我很抱歉。我想说的是。使用变量前要初始化,这句话是对的。你需要记住。但至于没有出现书上说的编译错误,并不是什么大不了的问题。书的编写可能依赖于某个编译器版本,也许那个版本的.net编译器是会如此检查。触类旁通的意思是要你明白其中有价值的:使用前要初始化。
如果你觉得我回答的不对,我建议你下次不要抱着这种态度来提问,标题上不要写高手2个字。我的3个星星只表示热心。
不好意思呀,谢谢你的解答。