using System;
using static System.Console;
using System.Collections.Generic;
public class Program {
public static void Main() {
var dict = new Dictionary<Class1, int> { { new Class1 { Id = new Guid(), Name = "João" }, 0 }};
foreach (var item in dict) WriteLine(item.Key.Name);
}
}
public class Class1 : IEquatable<Class1> {
public Guid Id { get; set; }
public string Name { get; set; }
public bool Equals(Class1 other) {
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Id.Equals(other.Id) && string.Equals(Name, other.Name);
}
public override bool Equals(object obj) {
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((Class1) obj);
}
public override int GetHashCode() {
unchecked {
int hash = (int) 2166136261;
hash = (hash * 16777619) ^ Id.GetHashCode();
return hash = (hash * 16777619) ^ (Name != null ? Name.GetHashCode() : 0);
}
}
public static bool operator ==(Class1 left, Class1 right) => Equals(left, right);
public static bool operator !=(Class1 left, Class1 right) => !Equals(left, right);
}
//https://pt.stackoverflow.com/q/191257/101
dXNpbmcgU3lzdGVtOwp1c2luZyBzdGF0aWMgU3lzdGVtLkNvbnNvbGU7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKcHVibGljIGNsYXNzIFByb2dyYW0gewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKSB7CgkJdmFyIGRpY3QgPSBuZXcgRGljdGlvbmFyeTxDbGFzczEsIGludD4geyB7IG5ldyBDbGFzczEgeyBJZCA9IG5ldyBHdWlkKCksIE5hbWUgPSAiSm/Do28iIH0sIDAgfX07CgkJZm9yZWFjaCAodmFyIGl0ZW0gaW4gZGljdCkgV3JpdGVMaW5lKGl0ZW0uS2V5Lk5hbWUpOwoJfQp9CgpwdWJsaWMgY2xhc3MgQ2xhc3MxIDogSUVxdWF0YWJsZTxDbGFzczE+IHsKICAgIHB1YmxpYyBHdWlkIElkIHsgZ2V0OyBzZXQ7IH0KICAgIHB1YmxpYyBzdHJpbmcgTmFtZSB7IGdldDsgc2V0OyB9CgogICAgcHVibGljIGJvb2wgRXF1YWxzKENsYXNzMSBvdGhlcikgewogICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobnVsbCwgb3RoZXIpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyh0aGlzLCBvdGhlcikpIHJldHVybiB0cnVlOwogICAgICAgIHJldHVybiBJZC5FcXVhbHMob3RoZXIuSWQpICYmIHN0cmluZy5FcXVhbHMoTmFtZSwgb3RoZXIuTmFtZSk7CiAgICB9CgogICAgcHVibGljIG92ZXJyaWRlIGJvb2wgRXF1YWxzKG9iamVjdCBvYmopIHsKICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG51bGwsIG9iaikpIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKHRoaXMsIG9iaikpIHJldHVybiB0cnVlOwogICAgICAgIGlmIChvYmouR2V0VHlwZSgpICE9IHRoaXMuR2V0VHlwZSgpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIEVxdWFscygoQ2xhc3MxKSBvYmopOwogICAgfQoKICAgIHB1YmxpYyBvdmVycmlkZSBpbnQgR2V0SGFzaENvZGUoKSB7CiAgICAgICAgdW5jaGVja2VkIHsKICAgICAgICAgICAgaW50IGhhc2ggPSAoaW50KSAyMTY2MTM2MjYxOwogICAgICAgICAgICBoYXNoID0gKGhhc2ggKiAxNjc3NzYxOSkgXiBJZC5HZXRIYXNoQ29kZSgpOwogICAgICAgICAgICByZXR1cm4gaGFzaCA9IChoYXNoICogMTY3Nzc2MTkpIF4gKE5hbWUgIT0gbnVsbCA/IE5hbWUuR2V0SGFzaENvZGUoKSA6IDApOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGJvb2wgb3BlcmF0b3IgPT0oQ2xhc3MxIGxlZnQsIENsYXNzMSByaWdodCkgPT4gRXF1YWxzKGxlZnQsIHJpZ2h0KTsKCiAgICBwdWJsaWMgc3RhdGljIGJvb2wgb3BlcmF0b3IgIT0oQ2xhc3MxIGxlZnQsIENsYXNzMSByaWdodCkgPT4gIUVxdWFscyhsZWZ0LCByaWdodCk7Cn0KCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9xLzE5MTI1Ny8xMDE=