#c# #registry
#c# #реестр
Вопрос:
Я не уверен, что я здесь делаю не так. У меня есть класс, созданный для получения некоторых значений reg-ключа, и я продолжаю получать ошибки приведения типов. Я передаю имя ключа. Значением ключа является значение int. Которое также должно быть возвращаемым значением.
Я продолжаю получать эту ошибку
Не удается неявно преобразовать тип ‘string’ в int
в следующих расположениях:
rValue = (string)myKey.GetValue("DebugLog");
amp;set { DebugLog = getDebugLog(value);}
обратите внимание на это в в c#
private int DebugLog;
private int getDebugLog(String name)
{
int rValue;
myKey = Registry.LocalMachine.OpenSubKey(regKey name, false);
rValue = (string)myKey.GetValue("DebugLog");
return rValue;
}
public int debugLog
{
get { return DebugLog; }
set { DebugLog = getDebugLog(value);}
}
Ответ №1:
Реестр здесь не имеет значения — вы присваиваете значение string
, а затем пытаетесь присвоить это выражение int
переменной. Это похоже на это:
object x = "hello";
int y = (string) x;
Это никогда не сработает. Если вы хотите преобразовать строку в целое число, вам нужно проанализировать ее, например, с помощью int.Parse
или int.TryParse
.
Если значение в реестре на самом деле является целым числом, просто приведите его к этому.
Ответ №2:
rValue = Convert.ToInt32(myKey.GetValue("DebugLog"));
Ответ №3:
Вы объявляете rValue как int, но задаете его как строку. Попробуйте это:
rvalue = Int32.Parse((string)myKey.GetValue("DebugLog"));
Комментарии:
1. ok rvalue = Int32.Parse((строка)MyKey. GetValue(«DebugLog»)); сработало, теперь я получаю сообщение cannot convert from int to string с помощью методов get и set. public int debugLog { get { return DebugLog; } set { DebugLogAutoRoll = getDebugLog(значение);} }
2. Вам нужно будет написать функцию set с помощью MyKey. GetValue(«Журнал отладки», значение. toString()). Если хотите, пожалуйста, примите этот ответ.
Ответ №4:
Что такое «Журнал отладки»? Значение уже установлено?
private int getDebugLog(String name)
{
int rValue;
myKey = Registry.LocalMachine.OpenSubKey(regKey name, false);
object o = myKey.GetValue("DebugLog");
if (o != null) {
rValue = o.ToString();
if (!String.IsNullOrEmpty(rValue)) {
return Convert.ToInt32(Convert.ToDecimal(rValue));
}
}
return null;
}
Комментарии:
1. вы не можете вернуть null для функции int.