程序一(直接对结构中的字段赋值,可以):using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 结构
{
struct IDCard
{
public int id;
public string name;
public int Id
{
get { return id; }
set { id = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main(string[] args)
{
IDCard idc;
idc.id = 12345; //直接对字段赋值
idc.name = "张四 "; //直接对字段赋值
Console.WriteLine("身份证号码:{0},姓名:{1}",idc .Id ,idc .Name );
Console.ReadKey();
}
}
}运行结果:
身份证号码:12345,姓名:张四程序二(直接对结构中的属性赋值,出错):using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 结构
{
struct IDCard
{
public int id;
public string name;
public int Id
{
get { return id; }
set { id = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main(string[] args)
{
IDCard idc;
idc.Id = 12345; //直接对属性赋值
idc.Name = "张四 "; //直接对属性赋值
Console.WriteLine("身份证号码:{0},姓名:{1}",idc .Id ,idc .Name );
Console.ReadKey();
}
}
}出错提示:
内容:Use of unassigned local variable 'idc' 行数:(上面带下划线的一行)求解释。
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 结构
{
struct IDCard
{
public int id;
public string name;
public int Id
{
get { return id; }
set { id = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main(string[] args)
{
IDCard idc;
idc.id = 12345; //直接对字段赋值
idc.name = "张四 "; //直接对字段赋值
Console.WriteLine("身份证号码:{0},姓名:{1}",idc .Id ,idc .Name );
Console.ReadKey();
}
}
}运行结果:
身份证号码:12345,姓名:张四程序二(直接对结构中的属性赋值,出错):using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 结构
{
struct IDCard
{
public int id;
public string name;
public int Id
{
get { return id; }
set { id = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main(string[] args)
{
IDCard idc;
idc.Id = 12345; //直接对属性赋值
idc.Name = "张四 "; //直接对属性赋值
Console.WriteLine("身份证号码:{0},姓名:{1}",idc .Id ,idc .Name );
Console.ReadKey();
}
}
}出错提示:
内容:Use of unassigned local variable 'idc' 行数:(上面带下划线的一行)求解释。
(不知道为什么帖子中的下划线没有显示出来?)
属性等同于方法,直接调用方法并不会实例化它,而如果先给字段赋值,再调用方法就可以的了。
根据我的理解,确实是分配了空间,但如果不显示调用new,空间并没有“清理”成各字段的初始值。在这种情况下,你直接call里面的方法或属性会报未初始化错。
IDCard idc1;
idc1.id = 12345;
idc1.name = "x";
idc1.Name = "a";// 这样就不可以
IDCard idc2;
idc2.name = "x";
idc2.Name = "a";
例化struct,则其所有的字段将处于未分配状态,直到所有字段完成初始化,否则引用
未赋值的字段会导致编译错误。
因为你的[u]是写在C#code中的,所以。。俄。。