Этот метод не будет работать, но как можно реализовать подобную логику?
string s = "s";
int n = 1;
void do(Object obj)
{
string str = "";
int i = 0;
if (obj.GetType() == str.GetType()){
Console.WriteLine(obj);
}
else if (obj.GetType() == i.GetType()){
obj = obj*10;
}
}
do(s);
do(n);
Редко сталкиваюсь с такой проблемой. Так подойдет?
1-й Вариант
2-й Вариант
1-й Вариант:
static void Main(string[] args)
{
string x = "Как же Хорошо, что Земля квадратная, на углу всегда встретимся.";
int y = 124;
var ss = GetType<string>(ref x);
Console.WriteLine("Тип: " + ss);
ss = GetType<int>(ref y);
Console.WriteLine("Тип: " + ss);
Console.ReadKey();
}
public static string GetType<T> (ref T x)
{
string _type = x.GetType().ToString();
return _type;
}
2-й Вариант:
static void Main(string[] args)
{
Console.WriteLine("Вызываем метод: GetType2 с разными параметрами");
var gt1 = GetType2(10);
var gt2 = GetType2("Unity 3D vs Unreal Engine");
Console.WriteLine("GetType2(10) - Type: " + gt1);
Console.WriteLine("GetType2(Unity 3D vs Unreal Engine) - Type: " + gt2);
Console.ReadKey();
}
public static string GetType2(string x)
{
string _type = x.GetType().ToString();
return _type;
}
public static string GetType2(int x)
{
string _type = x.GetType().ToString();
return _type;
}
И так, кто/что запрещает вам использовать Pattern Matching?
Но для начала пример без pattern matching'a:
void Do(object obj)
{
var type = obj.GetType();
var code = Type.GetTypeCode(type);
switch (code)
{
case TypeCode.String:
Console.WriteLine("Это строка");
break;
case TypeCode.Int32:
Console.WriteLine("Это число");
break;
}
}
А теперь открываем для себя Pattern Matching:
void Do(object obj)
{
if (obj is string str)
{
Console.WriteLine("Это строка");
}
else if (obj is int i)
{
Console.WriteLine("Это число");
}
}
А еще советую прочитать вам про перегрузку методов:
void Do(string str)
{
Console.WriteLine("Это строка");
}
void Do(int i)
{
Console.WriteLine("Это число");
}
Ну и еще 1 вариант с Switch:
void Do(object obj)
{
switch (obj)
{
case string s:
Console.WriteLine("Это строка");
break;
case int i:
Console.WriteLine("Это число");
break;
}
}
object i = 4;
MyMethod(ref i);
Console.WriteLine(i); // 40
void MyMethod(ref object obj)
{
if (obj is int)
obj = (int)obj * 10;
else Console.WriteLine(obj.ToString());
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Решил попробовать написать своего первого бота (надеюсь не последнего) для Vk, используя VKNet и на языке C#Найдя несколько гайдов, я приступил...
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах
Почему у меня высвечивается ошибка с индексом: Array index is out of range
Есть необходимость получить объект типа dynamic из Json наNET Core 3