是否有.Net的Common Lisp实现?
搜索努力:
还有一些我不记得了......
预想:每个"内置型" C#(如int,float,char等等)是一个类,并且在C#每类从继承Object类.因此,每个"内置类型"都继承自Object该类.
考虑到这种先入为主,我假设要设置一个double变量,例如,我需要使用"普通"语法设置一些属性.这就是我的意思:
double number = new double();
number.leftSide= 5;
number.rightSide = 23;
Console.Write(number);
// Output:
// 5.23
Run Code Online (Sandbox Code Playgroud)
但是C#有用于创建一个特殊的,相当于语法double变量(在某种程度上,它会做什么,我试图做以上,不就是上面的代码将实际工作):
double number = 5.23;
Run Code Online (Sandbox Code Playgroud)
编译器理解浮点将数字分成两个:5和23.
我的问题是我是否可以对自己的课程做同样的事情.例如,如果我有自己的Time类(这只是一个例子,所以请不要建议使用内置的时间类),我希望有这样的选项来实例化它:
Time time = 10:25;
Run Code Online (Sandbox Code Playgroud)
并且编译器会理解冒号将数字分成小时和分钟(我认为,这是我需要在Time类中创建的属性).
我听说过Roslyn CTP,但我正在寻找一种更简单,内置的方式来做我所描述的.
我可以做吗?
我试图在没有else的情况下实现"return if"/"return value if",因为我只想在条件有效时返回或返回值.
我知道,有if (condition) return;或者if (condition) return value;我想让代码更清洁一点,因为它更具可读性,所以拥有这种语法会很好.
我听说过roslyn这是可能的,并在这里回答问题:有没有办法在C#中实现自定义语言功能?但我不知道如何实现它.
所以代码将是这样的:
public class Testclass
{
public static void Main(String[] args)
{
Testclass t = new Testclass();
t.TestMyClassWithVoid();
bool success = t.TestMyClassWithInt(3) == 3;
bool fail = t.TestMyClassWithInt(2) == 2;
}
public void TestMyClassWithVoid()
{
int value = GetValueFromSomeWhere();
return if value == 3;
DoSomeOtherStuffSinceValueIsNotThree();
}
public int TestMyClassWithInt(int value)
{
return value if value == 3;
DoSomeOtherStuffSinceValueIsNotThree();
return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法我怎么能解决这个问题?我开始尝试使用Roslyn.Compilers.CSharp …
关于问题从调用方法获取参数名称和查找传递给C#中函数的变量名称,我仍在寻找一种方法来定义WhatDoesTheAnimalSay_WANTED方法:我想知道用作变量的名称一个参数:
public class Farm
{
public readonly string Cow = "Muuuuhh";
public string Cat { get; set; }
public void MainFunction()
{
var dog = "WauWau";
var kiwi = new Bird("QueeeekQueeek");
Cat = "Miiiaaauuuu";
// This one works but looks kinda ugly and is cumbersome when used
WhatDoesTheAnimalSay(nameof(dog), dog);
WhatDoesTheAnimalSay(nameof(Cow), Cow);
WhatDoesTheAnimalSay(nameof(Cat), Cat);
WhatDoesTheAnimalSay(nameof(kiwi), kiwi);
WhatDoesTheAnimalSay_WRONG1(dog);
WhatDoesTheAnimalSay_WRONG2(dog);
WhatDoesTheAnimalSay_WANTED(dog);
WhatDoesTheAnimalSay_WANTED(Cow);
}
public void WhatDoesTheAnimalSay<T>(string name, T says)
{
MessageBox.Show("The " + name + " …Run Code Online (Sandbox Code Playgroud) 我正在编写一个供个人使用的库,它极大地扩展了C#功能,我想知道一些非常有趣的东西......是否可以创建自己的关键字?例如,if,foreach,for等.
我想要这样做的原因可以在我之前的问题中找到.