小编Iva*_*nov的帖子

Delphi新RTTI的实际用法 - 属性,值

在Delphi中找到了关于新RTTI的一个很好的解释,但我不明白我读过的所有重要内容 - 我在哪里可以使用它?

它应该取代什么?

delphi attributes rtti delphi-2010

19
推荐指数
2
解决办法
2945
查看次数

如何在C#中将类作为IEnumerable?

所以我内部有一个类和一个通用List,但它是私有的.

class Contacts
{
    List<Contact> contacts;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想让这个课有效:

foreach(Contact in contacts) .... ;
Run Code Online (Sandbox Code Playgroud)

像这样(不工作):

Contacts c;
foreach(Contact in c) .... ;
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,Contact类实例c必须从联系人返回每个项目(c的私有成员)

我该怎么做?我知道它必须是IEnumerable与yield return,但在哪里声明?

c# ienumerable class

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

18
推荐指数
2
解决办法
6万
查看次数

我什么时候应该使用公共/私有/静态方法?

我是C#的新手.到目前为止,我曾经创建过每个全局变量 - public static.我的所有方法都是public static,所以我可以从其他类中访问它们.

我在SO上看到,我拥有的公共静态方法越少越好.所以我通过将所有代码放在一个类中来重写我的应用程序 - 表单类.现在我的所有方法都是私有的,并且没有静态方法.

我的问题:我应该怎么做,在表格类中保留所有内容都是我认为的转储.

什么时候我应该使用public,私有和静态私有/公共?

我认为公共方法是一种"缺点",因为它们可以反编译,但我对此表示怀疑.我的公共方法也可以被反编译.私有方法中的"私有"是什么?

编辑:我不是问如何阻止我的程序被反编译,我问我是否应该使用静态,私有和公共.还有:将所有代码放在表单类中是否有问题所以我没有使用公共方法?

c# vb.net

18
推荐指数
3
解决办法
5万
查看次数

可访问性不一致:基类比类更难访问

所以我在DLL和该类的子类中有一个抽象基类.我希望孩子们是公共的,但是要成为私人的基础,以便它不能在dll之外访问.

我怎么做?

c# dll access-specifier

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

从C#NET 3.5中的byte []保存文件

我的TCP客户端在数据包中接收图像.图像使用zlib压缩.任务是解压缩图像并将其放在表单上.

我打算将压缩的图像保存在当前目录中,解压缩并在表单上加载解压缩的文件.

第一个问题是保存文件(压缩).zlib可以保存解压缩.

下面的代码加载压缩文件并在解压缩后保存.

    private void decompressFile(string inFile, string outFile)
    {
        System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);
        zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream);
        System.IO.FileStream inFileStream = new System.IO.FileStream(inFile, System.IO.FileMode.Open);          
        try
        {
            CopyStream(inFileStream, outZStream);
        }
        finally
        {
            outZStream.Close();
            outFileStream.Close();
            inFileStream.Close();
        }
    }

    public static void CopyStream(System.IO.Stream input, System.IO.Stream output)
    {
        byte[] buffer = new byte[2000];
        int len;
        while ((len = input.Read(buffer, 0, 2000)) > 0)
        {
            output.Write(buffer, 0, len);
        }
        output.Flush();
    }
Run Code Online (Sandbox Code Playgroud)

如何将byte []数组直接传递给该函数?我打算将其保存为压缩文件,然后使用压缩文件的位置调用该函数,但我不知道如何从byte []数组中保存文件,也不知道传递byte []数组的方法作为输入文件.

任何帮助将受到高度赞赏.

谢谢.

c# compression zlib .net-3.5

17
推荐指数
2
解决办法
6万
查看次数

如何获取字符串中的第一个元素?

我正在试图找出一种方法来检查字符串的第一个元素,如果它是一个数字或不是.

if not(myString[0] in [0..9]) then //Do something
Run Code Online (Sandbox Code Playgroud)

问题是我收到错误"元素0无法访问 - 使用'长度'或'SetLength"

另一种方式来自我的C-like exprieince - 将字符串的第一个元素转换为char并检查char,但编译错误没有区别.

if not(char(myString[0]) in [0..9]) then //Do something
Run Code Online (Sandbox Code Playgroud)

我该如何完成它?

delphi string

16
推荐指数
4
解决办法
4万
查看次数

如何在Powershell中使用扩展方法?

我有以下代码:

using System
public static class IntEx
{
    /// <summary>
    /// Yields a power of the given number
    /// </summary>
    /// <param name="number">The base number</param>
    /// <param name="powerOf">the power to be applied on te base number</param>
    /// <returns>Powers applied to  the base number</returns>
    public static IEnumerable<int> ListPowersOf(this int number, int powerOf)
    {
        for (var i = number; ; i <<= powerOf)
        {
            yield return i;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Powershell中加载了dll(Windows 8).我尝试以下方式使用它:

$test = 1.ListPowersOf(2)
Run Code Online (Sandbox Code Playgroud)

应该返回@(1,2,4,8,16 ...)

相反,它说没有这样的方法.

我尝试了以下方法:

[BaseDllNamespace]::ListPowersOf(1,2)
Run Code Online (Sandbox Code Playgroud)

依然没有.我在IntEx类中没有命名空间.

我如何使其工作

.net c# powershell extension-methods

15
推荐指数
2
解决办法
4329
查看次数

如何在图片框上绘制文字?

我用谷歌搜索"在图片框C#上绘图文字",但我找不到任何有用的东西.然后我用谷歌搜索"在C#上绘图文字",我发现了一些代码,但它并没有按照我希望的方式工作.

    private void DrawText()
    {
        Graphics grf = this.CreateGraphics();
        try
        {
            grf.Clear(Color.White);
            using (Font myFont = new Font("Arial", 14))
            {
                grf.DrawString("Hello .NET Guide!", myFont, Brushes.Green, new PointF(2, 2));
            }
        }
        finally
        {
            grf.Dispose();
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我调用该函数时,表单的背景颜色变为白色(默认情况下为黑色).

我的问题:

1:这会在图片盒上工作吗?

2:如何解决问题?

c# graphics image

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

如何使用外部字体?

是否可以直接从Delphi中的资源使用字体以及如何使用?

我的第一步有问题.例如我不能在项目资源中包含Segoe UI Light字体,会发生异常.只有当文件的扩展名为'ttf'时才会出现异常.

如果上面写的不可能,那么如何在不单独部署字体(来自可执行文件)的情况下使用外部字体?

提前致谢!

delphi resources fonts delphi-2009

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