小编Nim*_*oud的帖子

C#默认传递参数是ByRef而不是ByVal

我知道默认是C#中的ByVal.我在很多地方使用了相同的变量名,然后我注意到传递的值改变了并且回来了.我想我知道C#的范围机制是错误的.此处,公共许可证会覆盖本地许可证值.我知道我可以轻松地重命名冲突中的变量名称,但我想了解有关范围的事实.

  public static class LicenseWorks
  {
     public static void InsertLicense(License license)
     {
        license.registered = true;
        UpdateLicense(license);
     }
  }

  public partial class formMain : Form
  {
     License license;

     private void btnPay_Click(object sender, EventArgs e)
     {
          license.registered = false;
          LicenseWorks.InsertLicense(license);

          bool registered = license.registered; //Returns true!
      }
  }    
Run Code Online (Sandbox Code Playgroud)

更新:我在下面添加了解决方案:

    public static void InsertLicense(License license)
    {

        license = license.Clone();
        ...
     }
Run Code Online (Sandbox Code Playgroud)

c#

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

具有超时/过期能力的列表

我需要一个这样的函数:

AddToList(txtName, timeExpire);
Run Code Online (Sandbox Code Playgroud)

它看起来像是自描述的,该项目将自动过期并从列表中删除.

我无法想象如何做到这一点.任何人都可以给我一个线索吗?

c# list

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

以管理员身份运行:requireAdministrator&ClickOnce +模拟系统时间

我的应用程序使用ClickOnce tehcnology.今天我需要以管理员身份运行它.我修改了清单文件

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)

但VS无法编译项目:

错误35 ClickOnce不支持请求执行级别'requireAdministrator'.

我认为不可能立刻使用它们.不是吗?我需要更改系统时间,我可以在应用程序级别执行此操作吗?我可以模仿它,所以应用程序.能做我想做的事.我改变时间+2小时然后放回一秒钟.我有几个dll,他们要求时间.

c# time clickonce winapi administrator

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

WPF绑定:无法解析静态资源

我试图运行这个例子,但我遇到了绑定问题.

Designer会突出显示错误 The resource "monthCollection" could not be resolved

如何使用Utility.MonthCollection作为本地资源?

XAML部分:

<Window x:Class="FaceReport.WindowMain"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Rapor" Height="402" Width="600" WindowState="Normal">
<Grid Name="gridMain" x:Uid="uidGridMain">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <ComboBox SelectedIndex="0" 
              DisplayMemberPath="Value" SelectedValuePath="Key" Margin="132,9,200,0"
              Grid.Row="3" Height="24" VerticalAlignment="Top" Name="cbBind" 

              ItemsSource="{Binding Source={StaticResource Utility.ReportForCollection},
                Path=Utility.ReportForCollection}"                   
              />
 </Grid>
 </Window>
Run Code Online (Sandbox Code Playgroud)

C#部分:

namespace FaceReport
{
internal class Utility
{
    public enum ReportFor
    {
        Choose,
        All,
        Group,
        Person
    }

    private static Dictionary<ReportFor, string> _dictReportFor;
    public static Dictionary<ReportFor, string> ReportForCollection
    {
        get
        {
            return _dictReportFor;
        }
    }

    static …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding

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

从内存中播放wav/mp3

我从文件播放mp3/wav来创建推送效果.但是,在基于Atom CPU的平板电脑上,触摸按钮时会有延迟.

我会尝试从内存而不是文件系统播放wav/mp3.任何人都可以提供代码片段或线索吗?

System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.SoundLocation = System.Windows.Forms.Application.StartupPath + "\\beep-7.wav";
player.Play();
Run Code Online (Sandbox Code Playgroud)

.net c# memory winforms soundplayer

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

C# 的 WebP 库

似乎 C# 中没有 WebP 的代码示例。有没有?我不需要直接显示 WebP 图像,但保存和传输为 WebP 会很好。

c# jpeg webp

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

GetHostEntry()不再解析该地址

我最近从.NET v3.5切换到v4.0客户端配置文件,并在第一次运行GetHostEntry()时出现问题.

          tcpClient.SocketInfo.SourceName = remoteMatcher.Host; // "88.255.126.48"
          tcpClient.SocketInfo.SourcePort = remoteMatcher.Port; // 999

          IPHostEntry ipEntry = Dns.GetHostEntry(tcpClient.SocketInfo.SourceName);
Run Code Online (Sandbox Code Playgroud)

GetHostEntry()导致异常:

WSANO_DATA 11004 有效名称,没有请求类型的数据记录.请求的名称有效且在数据库中找到,但没有正确的关联数据被解析.通常的示例是使用DNS(域名服务器)的主机名到地址转换尝试(使用gethostbyname或WSAAsyncGetHostByName).返回MX记录但没有A记录 - 表示主机本身存在,但不能直接访问.

我要重新启动机器,想要在所有事情丢失之前问这个问题.

更新:

我的解决方法:

   // .NET Framework v4.0 bug?? 
   IPAddress ip;
   if (IPAddress.TryParse(tcpClient.SocketInfo.SourceName, out ip))
       tcpClient.SocketInfo.SourceIP = tcpClient.SocketInfo.SourceName;
   else
   {
       IPHostEntry ipEntry = Dns.GetHostEntry(tcpClient.SocketInfo.SourceName);
       IPAddress[] addr = ipEntry.AddressList;
       tcpClient.SocketInfo.SourceIP = addr[addr.Length - 1].ToString();
   }
Run Code Online (Sandbox Code Playgroud)

c#

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

SQL:仅返回第一次出现

我很少使用SQL,我在档案中找不到任何类似的东西,所以我问这个简单的查询问题:我需要一个查询,其中一个返回personID,只有第一个看到的时间

记录:

seenID | personID | seenTime
   108      3         13:34
   109      2         13:56
   110      3         14:22
   111      3         14:31
   112      4         15:04
   113      2         15:52
Run Code Online (Sandbox Code Playgroud)

通缉结果:

personID | seenTime
   3         13:34
   2         13:56
   4         15:04
Run Code Online (Sandbox Code Playgroud)

这就是我所做的和失败的:

SELECT t.attendanceID, t.seenPersonID, t.seenTime
(SELECT ROW_NUMBER() OVER (PARTITION BY seenID ORDER BY seenID) AS RowNo,
seenID,
seenPersonID,
seenTime
FROM personAttendances) t
WHERE t.RowNo=1
Run Code Online (Sandbox Code Playgroud)

PS:注意SQL CE 4

sql sql-server-ce sql-server-ce-4

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

从时间中删除前导零以显示已用时间

我需要显示经过时间跨度的最简单版本.有没有准备好的事情呢?

样品:

HH:mm:ss
10:43:27 > 10h43m27s
00:04:12 > 4m12s
00:00:07 > 7s
Run Code Online (Sandbox Code Playgroud)

我想我需要一个格式提供程序来消磨时间.

c# formatting timespan

7
推荐指数
2
解决办法
4130
查看次数

无法序列化DataTable.未设置DataTable名称

我需要将所有数据表导出到单个XML文件,并且由于System.OutOfMemoryException(如果有一个巨大的表),我无法一次导出所有行.所以我试着导出N行.但是,如果我在查询中使用分页语法,则WriteXml会抛出异常.

我在LINQPad中测试了两个查询,它们没问题.

System.InvalidOperationException:无法序列化DataTable.未设置DataTable名称.

  // The first query causes exception
  string oraQueryGetTableData = "SELECT * FROM (SELECT t0.* FROM MY_TABLE t0) WHERE ROWNUM <= 100";

  // The second query runs without any error
  //oraQueryGetTableData = "SELECT * FROM MY_TABLE";

  OracleCommand oraCommandGetTableData = new OracleCommand(oraQueryGetTableData, oraConnection);

  OracleDataReader oraReaderTableData = oraCommandGetTableData.ExecuteReader();

  DataTable dataTable = new DataTable();
  dataTable.Load(oraReaderTableData);

  // Exception might occur here
  dataTable.WriteXml(writer, true);  
Run Code Online (Sandbox Code Playgroud)

这是什么问题或我该如何解决这个问题?

c# sql oracle datatable

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