[英]Newbie C# Can I return result value from private bool to make as const string?
我可以將bool的值結果轉換為const字符串嗎?
public const string MState = "";
這是我的代碼:
private bool GetStateByZipCode(string ZipOrPostalCode, string ST)
{
try
{
string strServerName = ConfigurationManager.AppSettings["ServerName"];
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyNGConnect_ConnectionString"].ToString());
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "ngc_GetStateByZipCode";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ZipOrPostalCode", ZipOrPostalCode);
cmd.Parameters.AddWithValue("@ST", ST);
SqlDataReader reader = storedProcCommand.ExecuteReader();
{
while (reader.Read())
{
if (reader["ZipOrPostalCode"].ToString().Equals(ZipOrPostalCode) &&
reader["ST"].ToString().Equals(ST))
{
ST = true;
break;
}
}
con.Close ();
reader.Close ();
return ST;
}
}
finally
{
}
const
不是變量,因此名稱為Constant 。 您不能在運行時為const
賦值。
我認為您正在尋找的是兩部分...第一部分是每個人都在告訴您...不,如果沒有一些非常差勁的編碼實踐,您就無法在代碼編譯后執行const字符串。 我不收集您真正要問的問題。 我認為您真正要問的是:是否可以將此方法的返回值(或ST(如果您將方法更改為返回字符串)轉換為字符串)。 答案是肯定的。 只需在var上使用ToString()即可。
例...
GetStateByZipCode("something", "something").ToString();
你不能這樣做。 由於常量變量不變,因此無法在運行時定義它們。 常數值只能在編譯時定義。 另外,我不建議將bool存儲在字符串中。 堅持正確的數據類型是一種好習慣。
我認為您真正想要的是...
首先,您不能將運行時值存儲在const
。
因此,更改您的聲明:
public string MState;
然后,您不想在方法上返回bool
,而是返回string
注意:我添加一些using
語句來清理此問題,但這遠非完美。
private string GetStateByZipCode(string ZipOrPostalCode, string ST)
{
try
{
string strServerName = ConfigurationManager.AppSettings["ServerName"];
using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyNGConnect_ConnectionString"].ToString()))
using (var cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandText = "ngc_GetStateByZipCode";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ZipOrPostalCode", ZipOrPostalCode);
cmd.Parameters.AddWithValue("@ST", ST);
using (SqlDataReader reader = storedProcCommand.ExecuteReader())
{
while (reader.Read())
{
if (reader["ZipOrPostalCode"].ToString().Equals(ZipOrPostalCode) &&
reader["ST"].ToString().Equals(ST))
{
return ST;
}
}
}
}
finally
{
}
}
}
然后像下面這樣分配MState
的值:
MState = GetStateByZipCode(zipCode, state);
如前所述, const
不是變量,其值在編譯時定義。 但是,您可以做的是定義一個只讀屬性,該屬性的值在其類的范圍內定義。 在這種情況下,只有該類才能操作它,並且該屬性在其他任何地方都像只讀屬性(您想要的是什么,而不是const)一樣起作用。
假設我了解您要執行的操作,則可以這樣完成:
class Address
{
private string _state; // the _state field
public string State// the State property
{
get
{
return _state;
}
}
private void SetState()
{
if(GetStateByZipCode(string ZipOrPostalCode, string ST))
{
_state = "ST";
}
else
{
_state = "Not ST";
}
}
}
您可以在其他地方使用如下所示的readonly屬性:
class OtherClass
{
Address add = new Address();
add.SetState();
//Prints the value assigned to State in Class Address
Console.Println(add.State);
//cannot do this
add.State = "Some Value";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.