我的机器上装了 IIS和Net Framework,请看我
的一段小程序,是用记事本写的:
<html>
<body>
<script language="C#" runat="server">
void Page_Load(object sender,EventArgs e) 
{
  if (DateTime.Now.Hour<12)  Label1.Text="现在是上午";
  else  Label1.Text="现在是下午";
}
</script><form runat="server">
<asp:Label id="Label1" runat="server"/>
</form>
</body>
</html>
这个程序可以运行的,我想问:C#不需要编译吗?难道它是脚本语言吗?
可是为什么有的说C#要编译呢?

解决方案 »

  1.   

    C#可以在WinForm和ASP.NET中使用,但只能在服务器端运行,客户端还的用JavaScript,因此C#只能算服务器脚本语言的一种。
      

  2.   

    佩服,c#屈尊去实现脚本语言的功能,却被产生了是不是本身就是脚本语言的误解啊,你这哪里来的代码,
    怎么没有code behind啊?
      

  3.   

    没想到只打两个字还是没抢到沙发,虽然你是写在html里,但是runat="server"告诉服务器它是在服务器上编译后在服务器上执行的。
      

  4.   

    脚本语言指的是像javascript这样不需要编译即可运行的轻量级语言说白了是语言不够完整,只能在网页里头打转而C#是现代语言面向对象的编程语言,出了用语网页之外,还可以生成win32程序,.net程序运行,这些都是脚本语言所不能做到的你的那个能运行是因为“runat=server" ,iis会自动将这些代码调用asp。net编译成为HTML输出运行原理跟脚本语言完全不一样滴。
      

  5.   

    不是。这种写法是ASP.NET   网页中支持嵌入式代码块,主要用于保留与旧的   ASP   技术的向后兼容性。一般情况下,将嵌入式代码块用于复杂的编程逻辑并不是最佳做法,因为当页中的代码与标记混合时,很难进行调试和维护。此外,由于代码仅在呈现页的过程中执行,因此与将代码置于适当的页处理阶段以执行后台代码或脚本块代码相比,其灵活性大大降低。嵌入式代码块的部分用途包括:将控件元素或标记元素的值设置为函数返回的值,如前面的示例所示。将计算直接嵌入到标记或控件属性中。   
      

  6.   


    是编译的。参考:http://www.cnblogs.com/gjcn/archive/2008/12/01/1341431.html
      

  7.   

    这个参考更明白一些:http://www.google.cn/search?hl=zh-CN&newwindow=1&rls=com.microsoft%3A*%3AIE-SearchBox&rlz=1I7GGIJ&q=asp.net+temporary&btnG=Google+%E6%90%9C%E7%B4%A2&meta=lr%3Dlang_zh-CN%7Clang_zh-TW&aq=f&oq=
      

  8.   

    或者参靠这篇文章:Temporary ASP.NET Files 文件夹中保存的是什么内容?(来源:MSDN) 
      

  9.   

    C#应该不算是脚本语言吧!!!在VS这一体系结构中,ASP.NET算是一脚本,但C#应该不是.它可以针对WEB,控制台,WINform都可以.
      

  10.   

    形式和asp脚本差不多,但实际上是编译后再执行的,因此不算脚本语言。
      

  11.   

    C#肯定不是脚本语言的?肯定需要.NET Framework的支持的。
    不过LZ的代码写法在ASP+中出现过,那个时候ASP.NET还没有实现Code Behind。
    自从Code Behind诞生以后,好久都没有见过这种嵌入式脚本了。