总结下C#中有关结构体的几个问题

记录几个别人面试过的变态题目。

1、结构体定义构造的时候需要注意什么?

先看两个测试结果:

总结:结构体中不允许显示的定义构造函数,可以定义有参构造,但是需要在函数中将结构体中定义的字段赋值。另外需要注意,结构体中不允许直接对字段赋值。

3、结构体中的类是什么类型,值类型还是引用类型?结构体继承了接口,是值类型还是引用类型?

 1 using System;
 2 
 3 namespace ConsoleApp1
 4 {
 5     interface IPeople { }
 6 
 7     class Job { }
 8 
 9     struct People : IPeople
10     {
11         public Job job;
12         public string name;
13         public int age;
14 
15         public People(int age)
16         {
17             this.job = new Job();
18             this.name = "Jim";
19             this.age = age;
20         }
21     }
22 
23     public class Program
24     {
25         static void Main(string[] args)
26         {
27             People p = new People(12);
28             p.job = new Job();
29             Console.WriteLine("\n结构体继承了接口是否值类型 : " + p.GetType().IsValueType);
30             Console.WriteLine("\n结构体中的 类 是否值类型 : " + p.job.GetType().IsValueType);
31             Console.WriteLine("\n结构体中的 字符串 是否值类型 :" + p.name.GetType().IsValueType);
32             Console.ReadLine();
33         }
34     }
35 }

 

posted @ 2020-04-17 13:58  小·糊涂仙  阅读(419)  评论(0编辑  收藏  举报