有如下:
using System;namespace tyt
{
class myClass
{
int k;
string name;
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
static string str;
static myClass mc;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
if(Class1.str == null)
{
Console.WriteLine(Class1.str);
}
//myClass mc;
if(Class1.mc == null)
{
Console.WriteLine(Class1.mc.ToString());
}
}
}
}
Console.WriteLine(Class1.str);在str为null时不会抛出异常,而Console.WriteLine(Class1.mc.ToString());却会抛出异常。
想知道当mc为null时,怎么让Console.WriteLine(Class1.mc.ToString());不抛出异常,而是往控制台写一个空字符??
using System;namespace tyt
{
class myClass
{
int k;
string name;
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
static string str;
static myClass mc;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
if(Class1.str == null)
{
Console.WriteLine(Class1.str);
}
//myClass mc;
if(Class1.mc == null)
{
Console.WriteLine(Class1.mc.ToString());
}
}
}
}
Console.WriteLine(Class1.str);在str为null时不会抛出异常,而Console.WriteLine(Class1.mc.ToString());却会抛出异常。
想知道当mc为null时,怎么让Console.WriteLine(Class1.mc.ToString());不抛出异常,而是往控制台写一个空字符??
if(Class1.mc == null)
{
Console.WriteLine(“”);
}
mc = new myClass();
str没实例化,只是一个引用,需要使用new在托管堆上分配空间才可以,否则回抛出异常。
string是不需要实例化的,因为string并不是类。
只是myClass没有实例化。
{
class myClass
{
int k;
string name;
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
static string str = null;
static myClass mc = new myClass();
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
if(Class1.str == null)
{
Console.WriteLine(Class1.str);
}
//myClass mc;
if(Class1.mc == null)
{
Console.WriteLine(Class1.mc.ToString());
}
}
}
}
if(Class1.mc == null)
两句都为真,但是在监视窗口str==null而mc==<未定义的值>,类似的,如果不给一个int k显示赋值,编译器会将k赋为0。
string型的null、int型的0和一般类型的<未定义的值>有何区别?
(Class1.mc==null? "":Class1.ms.ToString());