小编Ale*_*ung的帖子

PowerShell和StringBuilder

我是PowerShell的新手,但我熟悉.NET类.

System.Text.StringBuilder在PowerShell脚本中使用.脚本就是这样

Function MyStringFunc([String]$line) {
    $r = New-Object -TypeName "System.Collections.Generic.List``1[[System.String]]";
    $sb = New-Object -TypeName "System.Text.StringBuilder";

    foreach ($c in $line) {
        $sb.Append($c);
        $r.Add($sb.ToString());
    }

    return $r;
}

$line1 = "123";
$a = MyStringFunc $line1;
$a
Run Code Online (Sandbox Code Playgroud)

我预计结果是

1
12
123
Run Code Online (Sandbox Code Playgroud)

但结果是

                  Capacity                MaxCapacity                    Length
                  --------                -----------                    ------
                        16                 2147483647                         3
123
Run Code Online (Sandbox Code Playgroud)

我做错什么了吗?

.net powershell stringbuilder

33
推荐指数
2
解决办法
3万
查看次数

可以用Javascript编写编译器吗?

是否可以使用Javascript编写可以支持其他语言编写的编译器?

比方说,我有一段HTML.

<script language="cpp" id="cppScriptBlock" EntryPoint="main">
    int main() {
        cout << "<h1>CPPHeader</h1>";
    }
</script>

<script language="java" id="javaScriptBlock" EntryPoint="MyJavaClass">
    public class MyJavaClass {
        public final void main() {
            java.lang.System.out.println("<h1>JavaHeader</h1>");
        }
    }
</script>

<script language="csharp" id="csharpScriptBlock" EntryPoint="MyCSharpClass ">
    public class MyCSharpClass {
        public static void Main() {
            System.Console.WriteLine("<h1>CSharpHeader</h1>");
        }
    }
</script>


<script language="javascript">
    $("#cppScriptBlock").compileAndRun();
    $("#javaScriptBlock").compileAndRun();
    $("#csharpScriptBlock").compileAndRun();
</script>
Run Code Online (Sandbox Code Playgroud)

最后生成以下HTML

<h1>CPPHeader</h1>
<h1>JavaHeader</h1>
<h1>CSharpHeader</h1>
Run Code Online (Sandbox Code Playgroud)

可能吗?

亚历克斯

javascript compiler-construction

12
推荐指数
4
解决办法
9895
查看次数

为什么必须"等待"在"异步"方法中?

可能重复:
为什么async关键字存在

我有两种方法.一个是普通方法(MyMethod),一个是异步方法(MyMethodAsync).我收到编译错误.

static string MyMethod()
{
    var result = await MyMethodAsync(); // compile error here
    return result;
}

async static Task<string> MyMethodAsync()
{
    /** perform my logic here... **/
    Thread.Sleep(1000);

    return "yes";
}
Run Code Online (Sandbox Code Playgroud)

错误消息是

'await'运算符只能在异步方法中使用.考虑使用'async'修饰符标记此方法并将其返回类型更改为'Task'.

我糊涂了.当我使用await关键字时,调用线程将被挂起并等待任务完成.因此,一旦await使用,该方法不再是异步方法.对?

备注:我知道我应该把逻辑放入MyMethodMyMethodAsync调用MyMethod以实现我想要的.

c# async-await

10
推荐指数
1
解决办法
9081
查看次数

PL/SQL更新加入?

我知道PL/SQL中没有Update-Join语句.我曾经写过T-SQL.

我有两张桌子.

Alex_Table1
---------------------------
PK         VAL
---------------------------
1          Value1
2          Value2
3          Value3


Alex_Table2
---------------------------
PK         VAL
---------------------------
1          Value1_2
3          Value3_2
Run Code Online (Sandbox Code Playgroud)

我想将来自Alex_Table2的VAL更新为通过PK列加入的Alex_Table1.

在T-SQL中,这很简单

update t1 set t1.VAL = t2.VAL
from
    Alex_Table1 t1
    inner join Alex_Table2 t2 on t1.PK = t2.PK;
Run Code Online (Sandbox Code Playgroud)

结果就是我的预期

Alex_Table1
---------------------------
PK         VAL
---------------------------
1          Value1_2
2          Value2
3          Value3_2
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在PL/SQL中做?谢谢!

更新

谢谢Cyber​​nate和ypercube给了我两个有用的解决方案.他们都工作.但是,我想告诉您这两个陈述之间的表现.

我的实际表包含80,000条记录,只有3,000条需要更新.

MERGE 声明需要0.533秒.

UPDATE EXISTS 声明需要3分钟(我没有测量实际时间.我在3分钟后终止了我的过程.)

plsql join

9
推荐指数
2
解决办法
3万
查看次数

9
推荐指数
1
解决办法
1万
查看次数

覆盖App.xaml中的标准主题

我使用标准的WPF主题Aero.NormalColor.xaml.而且效果很好.但是对于整个应用程序,我想将文本框的前景颜色覆盖为红色.

我的第一次尝试是

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary
                Source="/PresentationFramework.Aero, Version=3.0.0.0,
               Culture=neutral, PublicKeyToken=31bf3856ad364e35,
               ProcessorArchitecture=MSIL;component/themes/Aero.NormalColor.xaml">
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
        <Style TargetType="TextBox">
            <Setter Property="Foreground" Value="Red" />
        </Style>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

嗯......文本框的所有前景色都变成了红色.但是,所有文本框都会丢失主题样式.是的,我知道我应该添加"BasedOn".我的第二次尝试是在样式标记中添加"BasedOn".

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary
                Source="/PresentationFramework.Aero, Version=3.0.0.0,
               Culture=neutral, PublicKeyToken=31bf3856ad364e35,
               ProcessorArchitecture=MSIL;component/themes/Aero.NormalColor.xaml">
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
        <Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
            <Setter Property="Foreground" Value="Red" />
        </Style>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

抛出异常.与此WPF相同:扩展主题的样式 - StackOverflowException

最终,我实现了我的目标.

在App.xaml中

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary
                Source="/PresentationFramework.Aero, Version=3.0.0.0,
               Culture=neutral, PublicKeyToken=31bf3856ad364e35,
               ProcessorArchitecture=MSIL;component/themes/Aero.NormalColor.xaml">
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

在所有窗口和用户控件中,我必须明确设置

<UserControl.Resources>
    <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
        <Setter Property="Foreground" Value="Red" …
Run Code Online (Sandbox Code Playgroud)

.net wpf xaml themes

8
推荐指数
1
解决办法
1万
查看次数

VB.NET弱类型?强类型的?

我以前用过C#.但是,在我加入一家新公司后,我需要编写vb.net.但是我觉得很难写.因为我发现vb.net不是强类型的.它真的不是强类型的吗?或者任何设置?这是一些例子.

If (Me.Check1() And Me.Check2()) Then
Run Code Online (Sandbox Code Playgroud)

从我的C#知识,一旦Me.Check1()返回false,Me.Check2()将不会被执行.但是我错了.And用于按位运算.我应该AndAlso用于布尔运算.所以它应该是

If (Me.Check1() AndAlso Me.Check2()) Then
Run Code Online (Sandbox Code Playgroud)

问题是If (Me.Check1() And Me.Check2()) Then仍然有效且没有编译错误.我真的想知道我是否能够检查这种"不恰当"的操作.

And而且AndAlso只是其中一个案例.

有时,我需要忽略案例字符串比较.但是,每个人都会犯错误.有时,我做到了

If (String.Compare(Me.string1, Me.string2, True)) Then
Run Code Online (Sandbox Code Playgroud)

我想每个人都知道这个问题.它应该是

If (String.Compare(Me.string1, Me.string2, True) = 0) Then
Run Code Online (Sandbox Code Playgroud)

但是,在编译期间我仍然无法检查这种情况.

我喜欢C#,因为它有助于我们在编译过程中发现许多问题.但是,VB.NET使我非常困惑,并且必须在运行时和测试期间确定许多错误.

还有一个例子就是

Public Sub MySub(ByVal obj as Object)
    Console.WriteLine(obj.MyProperty)
End Sub
Run Code Online (Sandbox Code Playgroud)

在vb.net中,这种语句仍然有效.为什么?为什么?为什么?有谁知道如何使用像C#一样的vb.net?

vb.net

8
推荐指数
1
解决办法
4560
查看次数

ASP.NET MVC 2 VirtualPathProvider GetFile每次都针对每个请求

我已经实现了VirtualPathProvider.VirtualPathProvider从文件系统中读取视图.

但是我的问题是GetFile(string virtualPath)每次请求都不会执行该方法.我认为这与缓存有关,不是吗?我想要的是每次请求每次获取文件.因为在某些情况下,文件系统中的页面将被修改,用户希望系统立即显示更改.

谢谢.

asp.net-mvc virtualpathprovider asp.net-mvc-2

8
推荐指数
1
解决办法
2702
查看次数

在程序包编译中绕过"表或视图不存在"

Oracle数据库中有两个模式.

MYSCHEMA 这是由我控制的.

OTHERSCHEMA 那不是我控制的.

我只知道我可以得到结果select * from OTHERSCHEMA.OTHEROBJECT.但是,OTHEROBJECT是一个同义词.

在我的包中,我有一个类似的声明

insert into MYSCHEMA.MYTABLE(COL1) select COL1 from OTHERSCHEMA.OTHEROBJECT;
Run Code Online (Sandbox Code Playgroud)

但它给了我 Table or view does not exist.

我该如何解决或绕过这个问题?谢谢!

oracle compilation package synonym

6
推荐指数
1
解决办法
2910
查看次数

.NET更改临时路径

如何为这两种方法设置临时路径?

System.IO.Path.GetTempFileName()
System.IO.Path.GetTempPath()
Run Code Online (Sandbox Code Playgroud)

我的公司应用程序是为带有.NET 4.0的Windows 2008而设计的.但是,该应用程序将支持Windows 2008和Azure.

由于Azure不允许本地文件写入,因此无法在Azure中创建临时文件.在应用程序中,有许多地方使用临时文件进行大量工作(这意味着我们无法将数据放入内存,因为临时文件很大.)

我的计划是创建一个TempFileWrapper替换原始临时文件生成.但是,如果仅仅是方法来改变从返回值System.IO.Path.GetTempFileName()System.IO.Path.GetTempPath,可以节省我的作品!

谢谢!

.net file azure temp

4
推荐指数
2
解决办法
2800
查看次数

如何在C#中编写一个"真正的"私有方法?

实际上,私有方法是在C#中实现的,仍可以使用它进行搜索Reflection.

我要做的是编写public string Encrypt(string data)private string Decrypt(string cipher)执行加密和解密的方法.

不幸的是,如果有人知道.NET框架,他可以Reflection用来查找Decrypt方法并解密所有加密的东西.

似乎不那么安全.所以我想把Decrypt方法变成真正的私有方法.

但是怎么做呢?


更新日期:2012年1月9日下午10:52悉尼时间

bdares提供了这个问题的技术解释

Eric Lippert提供了这个问题的政治解释

谢谢两位专家!

c# reflection truecrypt private-methods

4
推荐指数
2
解决办法
720
查看次数

Javascript提取评论RegExp

我有一个这样的Javascript文件

/**
 * My Comment Line1
 * My Comment Line2
 */
var a = 123;
/**
 * My Comment Line3
 * My Comment Line4
 */
var b = 456;
Run Code Online (Sandbox Code Playgroud)

我使用node.js来读取文件,并希望在此文件中提取注释.

我用这个正则表达式

/\/\*\*((?:\r|\n|.)*)\*\//
Run Code Online (Sandbox Code Playgroud)

然而,这提取

/**
 * My Comment Line1
 * My Comment Line2
 */
var a = 123;
/**
 * My Comment Line3
 * My Comment Line4
 */
Run Code Online (Sandbox Code Playgroud)

我的程序有一个循环来逐个提取匹配的块.所以我想要一个RegExp来提取

第一个循环

/**
 * My Comment Line1
 * My Comment Line2
 */
Run Code Online (Sandbox Code Playgroud)

第二个循环

/**
 * My Comment Line3
 * My Comment Line4
 */ …
Run Code Online (Sandbox Code Playgroud)

javascript regex comments extract

2
推荐指数
1
解决办法
3122
查看次数

未安装的数据库

我的应用程序需要一个数据库.但是,我想要一个像SQL Express这样的便携式数据库,用户不需要安装任何数据库.

但是我的环境现在改为Linux.有什么建议?

我接受SQL(Oracle,SQL Server,Postgre ...)和非SQL(mongodb ...等)数据库.谢谢!

database install portable-database

1
推荐指数
1
解决办法
481
查看次数