1. 程式人生 > >C#的new關鍵字的幾種用法

C#的new關鍵字的幾種用法

一共有三種用法:
在 C# 中,new 關鍵字可用作運算子、修飾符或約束。
1)new 運算子:用於建立物件和呼叫建構函式。這種大家都比較熟悉,沒什麼好說的了。
2)new 修飾符:在用作修飾符時,new 關鍵字可以顯式隱藏從基類繼承的成員。
3)new 約束:用於在泛型宣告中約束可能用作型別引數的引數的型別。

直接上程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace
NewTest { /* * a) 作為運算子用來建立一個物件和呼叫建構函式。 * b) 作為修飾符。 * c) 用於在泛型宣告中約束可能用作型別引數的引數的型別。 * */ class A { public A() { } public int data; public int Data { get { return data; } set { data = value; } } public int Data1 { get; set
; } public virtual void Get() { Console.WriteLine("AAAAAAA"); } } class B : A { public B():base() { } new public int data; new public int Data { get; set; } new public int Data1 { get; set; } new public void Get
() { Console.WriteLine("BBBBBBB"); } } class C<T> where T:new() { } class Program { static void Main(string[] args) { B b = new B(); b.data = 10; b.Data = 12; b.Data1 = 13; Console.WriteLine($"B:::data:{b.data},Data:{b.Data},Data1:{b.Data1}"); b.Get(); A a = b ; Console.WriteLine($"A:::data:{a.data},Data:{a.Data},Data1:{a.Data1}"); a.data = 100; a.Data = 120; a.Data1 = 130; Console.WriteLine($"A:::data:{a.data},Data:{a.Data},Data1:{a.Data1}"); a.Get(); Console.WriteLine($"B:::data:{b.data},Data:{b.Data},Data1:{b.Data1}"); b.Get(); C<B> c = new C<B>(); } } }

結果:
在這裡插入圖片描述

b斷點除錯結果:
在這裡插入圖片描述

這裡說明下,重寫父類的變數其實是重新定義了一個新的變數,變數名相同是把父類的變數隱藏了,會增加記憶體

參考文章:
C#的new關鍵字的幾種用法