我創建了一個類并在檔案中對其進行了自我初始化——這是使用它的最佳方式嗎?我有另一個可以使用的常量類,但由于某種原因我無法在我的專案中使用它,它們需要是常量嗎?
檔案:test.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace DH.Models
{
public class test
{
public string testSourceCollection { get; set; }
public string testSourceKey { get; set; }
public string testSourceDatabase { get; set; }
public string testSourceCluster { get; set; }
public string testSourceTimestamp { get; set; }
public test[] testDetails = {
new test{
testSourceCollection = "SourceCollection",
testSourceDatabase = "SourceDatabase ",
testSourceKey = "SourceKey ",
testSourceTimestamp = "SourceTimestamp "
},
new ProviderRecon
{
testSourceCollection = "testSourceCollection2",
testSourceDatabase = "testSourceDatabase2",
testSourceKey = "testSourceKey2",
testSourceTimestamp = "testSourceTimestam2",
testSourceCluster = "testSourceCluster2"
}
};
}
}
我想在我的 Worker.cs 檔案中使用
public class Worker : BackgroundService
{
var test = test.testDetails;
Console.WriteLine("2nd test: " test.testSourceCluster )
//Prints "2nd test: testSourceCluster2"
}
uj5u.com熱心網友回復:
您可能希望testDetails保持靜態。您不能使用型別訪問(非靜態)成員。更改public test[] testDetails = ...為public static test[] testDetails =...
但是,那里有很多非標準的命名,這使這段代碼難以閱讀。test應該改為呼叫該類Test。否則該行var test = test.testDetails;很難閱讀(并且可能無法編譯)。您的 Worker 類也是如此。那段代碼不會編譯。
uj5u.com熱心網友回復:
每次創建類的實體時,都會使用新陣列初始化 testDetails 屬性。如果為每個實體創建 1000 個實體,則 testDetails 將使用新陣列進行初始化。
您可以使用靜態欄位/屬性來避免使用相同的陣列創建多個實體。靜態關鍵字
或者使用靜態只讀屬性/欄位來避免使用相同的陣列創建多個實體。靜態只讀屬性/欄位可以使用靜態建構式進行初始化。靜態建構式
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437072.html
下一篇:帶有類初始化的回圈非常慢
