今天我去面试了,我问过为什么我们不能像在Web应用程序中那样在winforms中实现状态管理.所以任何人都可以给我正确的理由.
可能重复:
语句块中的变量范围
我在c#中有以下代码片段,但是不起作用
static void Main(string[] args)
{
if (true)
{
string name = "test";
}
else
{
string name = "hello";
}
string name = "world";
}
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误,说'name'已经在最后一行声明了,但是如果我改变它就'name = "some string"说没有声明变量名.
我在c#中有以下代码片段.
var list = new List<string> { "a", "b", "c" };
for (int i = 0; i < list.Count; i++)
{
list.Add(list[i].ToUpper());
}
Run Code Online (Sandbox Code Playgroud)
上面的代码中没有编译时错误,但我System.OutOfMemoryException在运行时遇到异常?
我试图在python中实现一个简单的表达式求值程序,但我陷入了解析器方法.Below是我的代码片段.
class Number:
def __init__(self,value):
self.value=value
def execute(self):
return self.value
class Plus:
def __init__(self,left,right):
self.left=left
self.right=right
def execute(self):
return self.left+self.right
class Minus:
def __init__(self,left,right):
self.left=left
self.right=right
def execute(self):
return self.left-self.right
class Multiply:
def __init__(self,left,right):
self.left=left
self.right=right
def execute(self):
return self.left*self.right
import re
def parser(input):
stack=[]
token_pat = re.compile("\s*(?:(\d+)|(.))")
for number, operator in token_pat.findall(input):
if number:
stack.append(Number(int(number)))
else:
first,second=stack.pop(),stack.pop()
if operator=="+":
stack.append(Plus(first,second))
elif operator=="-":
stack.append(Minus(first,second))
elif operator=="*":
stack.append(Multiply(first,second))
else:
raise SyntaxError("unknown operator")
print stack[0].execute()
if __name__=="__main__":
parser('1 2 +')
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我收到了以下错误.任何人都可以查看我的代码.
Traceback …Run Code Online (Sandbox Code Playgroud)